Many portable products, such as cell phones, laptop computers, personal data assistants (PDAs) and the like, utilize a processing system that executes programs, such as, communication and multimedia programs. A processing system for such portable products may include multiple processors, memory for storing instructions and data, controllers, peripheral devices, such as communication interfaces, and fixed function logic blocks configured, for example, on a single chip. Many of these peripheral devices utilize interrupts to notify an appropriate processor of an event that has occurred or that data is to be transferred between the peripheral device and memory. With processing systems having a large number of functions and associated system elements, a large number of interrupts have to be handled, many of which have to be processed to meet strict real time requirements. With such systems, it becomes increasingly important to efficiently service the large number of interrupts at low power drain to reduce overall energy consumption. Many personal computers are also being developed that utilize a large number of interrupts that must be efficiently serviced to support high performance operations.
In prior systems, relatively few interrupts and a small number of priority levels were generally supported by a programmable interrupt controller that interfaced to a single processor. However, current and planned future systems have grown in complexity causing an increase in the number of interrupts, priority levels, and interfacing processors required to meet product requirements. With this growth in system complexity, the number of interrupts having short or time critical, real time requirements, has also increased.